package com.community.demo.beans;

import java.io.Serializable;

import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

public class GenericBean implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	/**
	 * Permite obtener la session que ha sido generada por el
	 * servidor
	 * 
	 * @return
	 */
	public HttpSession getHttpSession(){
		HttpSession httpSession = (HttpSession) getFacesContext().getExternalContext().getSession(false);
		return httpSession;
	}
	
	/**
	 * Permite obtener el contexto de faces 2.0
	 * 
	 * @return
	 */
	public FacesContext getFacesContext(){
		return FacesContext.getCurrentInstance();
	}
	
	/**
	 * Pone la informacion del objeto en session con el nombre
	 * que se pasa como parametro
	 * 
	 * @param key
	 * @param object
	 */
	public void putValueSession(String key, Object object) {
		HttpSession httpSession = getHttpSession();
		httpSession.setAttribute(key, object);
	}
	
	/**
	 * Remueve de la session el objeto que tiene asociado
	 * el nombre que se pasa como parametro
	 * 
	 * @param key
	 */
	public void removeValueSession(String key) {
		HttpSession httpSession = getHttpSession();
		httpSession.removeAttribute(key);
	}
	
	/**
	 * Obtiene el request de la aplicacion
	 * 
	 * @return
	 */
	public HttpServletRequest getHttpServletRequest(){
		HttpServletRequest request = (HttpServletRequest) getFacesContext().getExternalContext().getRequest();
		return request;
	}
}